// /utils/request.js (完整替换)

import axios from "axios";
import { ElMessage } from "element-plus";
import router from "@/router";
import { getToken } from '@/utils/auth'; // 【重要】引入我们刚创建的 Token 工具

// 统一创建一个 axios 实例，我们就叫它 request
const request = axios.create({
    baseURL: '',
    timeout: 10000,
});

// 【核心改造】为这个唯一的实例添 加请求拦截器
request.interceptors.request.use(
    config => {
        // 从 localStorage 获取 Token
        const token = getToken();
        console.log('请求拦截器获取的TOKEN:', {
            value: token,
            type: typeof token,
            length: token?.length
        });

        if (token) {
            // 如果有 Token，就把它加到请求头里
            // 'X-Token' 这个名字要和你后端 req.getHeader("X-Token") 完全一致
            config.headers['x-token'] = token;
        }
        return config;
    },
    error => {
        return Promise.reject(error);
    }
);

// 【核心改造】为这个唯一的实例添加响应拦截器
request.interceptors.response.use(
    result => {
        // 你的后端返回 { code, data, msg/message } 结构
        if (result.data.code === '200' || result.data.success) { // 兼容你的两种成功标识
            return result.data; // 直接返回 data 部分
        }

        // 你的后端说登录失败会返回 Result.fail("用户未登录")
        // 我们在这里统一处理Token失效或未登录的情况
        if (result.data.code === 401 || (result.data.message && result.data.message.includes("未登录"))) {
            ElMessage.error("身份已过期，请重新登录");
            router.push('/login');
            return Promise.reject(result.data);
        }

        // 其他业务错误
        ElMessage.error(result.data.message || '服务异常');
        return Promise.reject(result.data);
    },
    error => {
        ElMessage.error('网络服务异常，请稍后再试');
        return Promise.reject(error);
    }
);

// 不再需要 postForm 这个辅助函数了，因为拦截器已经处理了所有请求
// 直接导出我们配置好的实例
export default request;